/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import Entity.Dosen;
import Entity.DosenPengabdianMasyarakat;
import Entity.PengabdianMasyarakat;
import Entity.User;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import library.Koneksi;

/**
 *
 * @author user
 * model untuk menangani operasi database berkaitan dengan dosen pelaksana pengabdian masyarakat
 */

public class DaftarDosenPengabdianMasyarakat {
    
    DosenPengabdianMasyarakat dosenPengmas;
    
    //method digunakan untuk menambah data dosen pelaksana pengabdian masyarakat
    public boolean tambahTimDosenPPM(DosenPengabdianMasyarakat dosen){
        
        boolean hasil = false;
        this.dosenPengmas = dosen;
        int noPenelitian = 0;
        Connection conn = Koneksi.getKoneksi();
        PreparedStatement st = null;
        if(!"".equals(this.dosenPengmas.getPengmas().getUniqueKey())){
            ResultSet rs1;
            try {
                String sql1 = "SELECT NO_PENGABDIAN_MASYARAKAT FROM pengabdian_masyarakat WHERE UNIQUEKEY = '"+this.dosenPengmas.getPengmas().getUniqueKey()+"'";
                System.out.println(sql1);
                
                st = conn.prepareStatement(sql1);
                
                rs1 = st.executeQuery();
                
                while(rs1.next()){
                    PengabdianMasyarakat pengmas = new PengabdianMasyarakat();
                    pengmas.setNoPengabdianMasyarakat(rs1.getInt("NO_PENGABDIAN_MASYARAKAT"));
                    this.dosenPengmas.setPengmas(pengmas);
                }
                System.out.println("nomor cantik"+rs1.getInt("NO_PENGABDIAN_MASYARAKAT"));
                
            } catch (SQLException ex) {
                Logger.getLogger(DaftarDosenPengabdianMasyarakat.class.getName()).log(Level.SEVERE, null, ex);
            } finally{
                try {
                    st.close();
                } catch (SQLException ex) {
                    Logger.getLogger(DaftarDosenPengabdianMasyarakat.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } 
        
        String sql = "insert into dosen_pengmas(ID_USER, NO_PENGABDIAN_MASYARAKAT, STATUS_DOSEN) "
                + "value('"+this.dosenPengmas.getDosen().getUser().getIdUser()+
                "', "+this.dosenPengmas.getPengmas().getNoPengabdianMasyarakat()+
                ", '"+this.dosenPengmas.getStatusDosen()+
                "')";
        
        System.out.println(sql);
        
        try {
            
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate();
            if(rs > 0){
                hasil = true;
            } else{
                return false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarDosenPengabdianMasyarakat.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarDosenPengabdianMasyarakat.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return hasil;
        
    }
    
    //method digunakan untuk mengecek data dosen pelaksana pengabdian masyarakat apakah telah terdapat pada database
    public boolean cekTimDosen(DosenPengabdianMasyarakat dosen){
        
        Connection conn = Koneksi.getKoneksi();
        PreparedStatement st = null;
        boolean hasil = true;
        
        try {
            String sqlCek = "select * from dosen_pengmas where ID_USER = '"+dosen.getDosen().getUser().getIdUser()+"' and NO_PENGABDIAN_MASYARAKAT = "+dosen.getPengmas().getNoPengabdianMasyarakat();
            st = conn.prepareStatement(sqlCek);
            ResultSet rs = st.executeQuery();
            rs.last();
            int row = rs.getRow();
            if(row > 0 ){
                hasil = false;
            } else{
                hasil = true;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarDosenPengabdianMasyarakat.class.getName()).log(Level.SEVERE, null, ex);
        }        
        
        return hasil;
        
    }
    
    //method digunakan untuk mengubah data dosen pelaksana pengabdian masyarakat
    public boolean ubahTimDosenPPM(DosenPengabdianMasyarakat dosen){
        
        boolean hasil = false;
        this.dosenPengmas = dosen;        
        
        String sql = "update dosen_pengmas set ID_USER = '"+this.dosenPengmas.getDosen().getUser().getIdUser()+"', "
                + "STATUS_DOSEN = '"+this.dosenPengmas.getStatusDosen()+"' where NO_PENGABDIAN_MASYARAKAT = "+this.dosenPengmas.getPengmas().getNoPengabdianMasyarakat()+ 
                " and STATUS_DOSEN = '1'";;
                        
        System.out.println(sql);
        
        PreparedStatement st = null;
        try {
            Connection conn = Koneksi.getKoneksi();
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate(sql);
            if(rs > 0){
                hasil = true;
            } else{
                return false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarDosenPengabdianMasyarakat.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarDosenPengabdianMasyarakat.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return hasil;
        
    }
    
    //method digunakan untuk menghapus data dosen pelaksana pengabdian masyarakat
    public boolean hapusDosenPengabdianMasyarakat(DosenPengabdianMasyarakat dosen){

        boolean hasil = true;

        PreparedStatement st = null;

        String sql = "DELETE FROM dosen_pengmas WHERE ID_USER = '"+dosen.getDosen().getUser().getIdUser()+"' AND NO_PENGABDIAN_MASYARAKAT = "+dosen.getPengmas().getNoPengabdianMasyarakat();
        System.out.println(sql);
        Connection conn = Koneksi.getKoneksi();
        try {
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate(sql);
            if(rs > 0){
                hasil = true;
            } else{
                hasil = false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarDosenPengabdianMasyarakat.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarDosenPengabdianMasyarakat.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return hasil;

    }
    
    //method digunakan untuk mengambil data daftar dosen pelaksana pengabdian masyarakat
    public List<DosenPengabdianMasyarakat> ambilDaftarDosenPengabdianMasyarakat(PengabdianMasyarakat pengmas){
        List<DosenPengabdianMasyarakat> daftarDosenPengabdianMasyarakat = new ArrayList<DosenPengabdianMasyarakat>();
        
        String sql = "SELECT * FROM dosen_pengmas, user, dosen, pengabdian_masyarakat "
                + "WHERE pengabdian_masyarakat.NO_PENGABDIAN_MASYARAKAT = dosen_pengmas.NO_PENGABDIAN_MASYARAKAT "
                + "AND dosen_pengmas.ID_USER = dosen.ID_USER AND dosen.ID_USER = user.ID_USER "
                + "and pengabdian_masyarakat.NO_PENGABDIAN_MASYARAKAT="+pengmas.getNoPengabdianMasyarakat()+" AND dosen_pengmas.STATUS_DOSEN = '0' ORDER BY dosen_pengmas.STATUS_DOSEN ASC";
        PreparedStatement st = null;
        try {

            Connection conn = Koneksi.getKoneksi();

            st = conn.prepareStatement(sql);
            ResultSet rs = st.executeQuery();

            while(rs.next()){
                this.dosenPengmas = new DosenPengabdianMasyarakat();
                
                User user = new User();
                user.setIdUser(rs.getString("ID_USER"));
                user.setNamaUser(rs.getString("NAMA_USER"));
                
                Dosen dosen = new Dosen();
                dosen.setUser(user);
                                
                this.dosenPengmas.setDosen(dosen);
                this.dosenPengmas.setPengmas(pengmas);
                this.dosenPengmas.setStatusDosen(rs.getString("STATUS_DOSEN"));
                                
                daftarDosenPengabdianMasyarakat.add(this.dosenPengmas);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarDosenPengabdianMasyarakat.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                st.close();
            } catch (SQLException ex) {
                Logger.getLogger(DaftarDosenPengabdianMasyarakat.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return daftarDosenPengabdianMasyarakat;
    }
    
}
